package com.powernode.springmvc.controller;

import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpSession;
import org.springframework.core.io.support.ResourcePatternResolver;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

import java.util.Arrays;

@Controller
public class UserController {

    private final ResourcePatternResolver resourcePatternResolver;

    public UserController(ResourcePatternResolver resourcePatternResolver) {
        this.resourcePatternResolver = resourcePatternResolver;
    }

    //欢迎注册页面 希望用户进入时先进入该页面则 RM的路径选择/
    @RequestMapping("/")
    public String toRegiser(){
        //返回一个逻辑视图 该逻辑视图会根据springmvc中的视图解析器
        //去拼接物理视图 去访问 thymeleaf/register.html
        return "register";
    }

    //使用原生Servlet的方式去实现获取表单数据
//    @PostMapping(value = "/user/reg")
//    public String register(HttpServletRequest request, HttpServletResponse response, HttpSession session){
//        //HttpServletRequest HttpServletResponse HttpSession都属于原生的Servlet API
//        System.out.println(request);
//        System.out.println(response);
//        System.out.println(session);
//
//        //获取请求的表单数据 username password sex interest 使用java原生实现
//        String username = request.getParameter("username");
//        String password = request.getParameter("password");
//        String sex = request.getParameter("sex");
//        String[] interests = request.getParameterValues("interest");
//        String intro = request.getParameter("intro");
//        System.out.println(username);
//        System.out.println(password);
//        System.out.println(sex);
//        System.out.println(Arrays.toString(interests));
//        System.out.println(intro);
//        return "ok";


//    //获取表单的数据使用RequestParam注解实现
//    //该注解是作用在形参上 把请求参数与方法形参映射
//    @PostMapping(value = "/user/reg")
//    public String register(
//            @RequestParam(value = "username")
//            String username,//用户名
//            @RequestParam(value = "password")
//            String password,//密码
//            @RequestParam(value = "sex")
//            Integer sex,//性别
//            @RequestParam(value = "interest")
//            String[] interest,//爱好
//            @RequestParam(value = "intro")
//            String intro ,//自我介绍
//            //@RequestParam(value = "age" ,required = true)//表示age参数必须存在
//            //@RequestParam(value = "age" ,required = false)//表示age参数不用必须存在 当前端不给其值时，默认null
//            @RequestParam(value = "age" ,required = false,defaultValue = "200")//表示age参数不用必须存在 默认值200
//            String age
//    ){
//        //上面获取请求参数的信息后 直接打印参数即可
//        System.out.println(username);
//        System.out.println(password);
//        System.out.println(sex);
//        System.out.println(Arrays.toString(interest));
//        System.out.println(intro);
//        System.out.println("年龄age的数值是："+age);
//        //打印完成后返回逻辑视图 跳转到ok页面
//        return "ok";
//    }

    //获取表单的数据依靠控制器方法上的形参名实现
    //要求形参名与前端name请求数据的名字一致
//    @PostMapping(value = "/user/reg")
//    public String register(
//            String username,//用户名
//            String password,//密码
//            Integer sex,//性别
//            String interest,//爱好
//            String intro ,//自我介绍
//            String age//年龄
//    ){
//        //上面获取请求参数的信息后 直接打印参数即可
//        System.out.println(username);
//        System.out.println(password);
//        System.out.println(sex);
//        System.out.println("兴趣爱好是:"+interest);
//        System.out.println("自我介绍是:"+intro);
//        System.out.println("年龄age的数值是："+age);
//        //打印完成后返回逻辑视图 跳转到ok页面
//        return "ok";
//    }


    //最重要也最简单的方式获取请求参数
    //使用Pojo类 javabean类去接受请求参数
    @RequestMapping("/user/reg")
    public String register(User user,
                           @RequestHeader(value = "Referer",required = false,defaultValue = "")
                           String referer,
                           @CookieValue(value = "id" ,required = false,defaultValue = "")//cookie的名称是id去获取该cookie
                           String id){
        System.out.println("前端请求的参数封装的java对象是:"+user);
        System.out.println("前端请求头中referer的参数值是："+referer);
        System.out.println("前端发送Cookie的值是:"+id);
        //返回逻辑视图
        return "ok";
    }
}
